﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DiscoveryLogic.Workflows.Components.Markov.MaxEnt
{
    /// <summary>
    /// An object which can deliver a stream of training events for the GIS
    /// procedure (or others such as IIS if and when they are implemented).
    /// TrainingEventReaders don't need to use SharpEntropy.ITrainingDataReader, but doing so
    /// would provide greater flexibility for producing events from data stored in
    /// different formats.
    /// </summary>
    public interface ITrainingEventReader
    {

        /// <summary> 
        /// Returns the next TrainingEvent object held in this TrainingEventReader.
        /// </summary>
        /// <returns>
        /// the TrainingEvent object which is next in this TrainingEventReader
        /// </returns>
        TrainingEvent ReadNextEvent();

        /// <summary> 
        /// Test whether there are any TrainingEvents remaining in this TrainingEventReader.
        /// </summary>
        /// <returns>
        /// true if this TrainingEventReader has more TrainingEvents
        /// </returns>
        bool HasNext();
    }
}
